#!/bin/sh

# 脚本出错时立即退出
set -e

# 默认情况下，应用在后台运行
RUN_APP_IN_BACKGROUND=false

# 检查 NGROK_AUTHTOKEN 是否设置并且非空
if [ -n "$NGROK_AUTHTOKEN" ]; then
  echo "NGROK_AUTHTOKEN is set. Configuring and starting ngrok..."
  # 配置 ngrok token
  ngrok authtoken "$NGROK_AUTHTOKEN"

  # 启动 ngrok 隧道到容器的 3000 端口
  # 使用 --log=stdout 将日志输出到控制台，方便 docker logs 查看
  # 在后台运行 ngrok
  ngrok http 3000 --log=stdout &
  echo "ngrok started in background."
  # 给 ngrok 一点时间启动并输出 URL
  sleep 5 # 可根据需要调整
  RUN_APP_IN_BACKGROUND=false # 如果 ngrok 运行，主应用可以在前台，保持容器活性
else
  echo "NGROK_AUTHTOKEN is not set or is empty. Skipping ngrok."
fi

echo "Starting Next.js application on port $PORT..."
# 启动 Next.js 应用
# 如果 ngrok 在后台运行，Node 应用可以在前台运行以保持容器存活
if [ "$RUN_APP_IN_BACKGROUND" = "true" ]; then
  node server.js &
  # 如果主应用也在后台，需要一个前台进程保持容器运行
  # 例如，tail -f /dev/null，但这通常不是最佳实践，最好让主应用在前台
  echo "Application started in background. Container might exit if no foreground process remains."
  wait # 等待所有后台任务，但这可能不会按预期工作，取决于shell
else
  exec node server.js # 使用 exec 替换当前 shell 进程，Node 应用成为 PID 1 (或主进程)
fi